今天又是適合每日一刷的一天
我們今天就來講講第七題:Reverse Integer
給定一個 32 位有符號整數,將整數中的數字進行反轉
1.初始化結果變數:
定義一個變數 ans,用來存儲反轉後的結果。
2.逐位反轉數字:
使用 while 迴圈來提取輸入數 x 的最後一位數字,並將該數字加到 ans 的末尾,然後去掉 x 的最後一位數字。
3.檢查溢出:
每次將數字加入到 ans 前,檢查結果是否會超過 32 位整數範圍。若會溢出則立即返回 0。
4.返回反轉後的結果:
如果沒有溢出,返回 ans,否則返回 0。
class Solution {
public:
int reverse(int x) {
int ans = 0;
while (x != 0) {
int digit = x % 10; // 取出最後一位數字
// 檢查是否會溢出
if (ans > INT_MAX / 10 || (ans == INT_MAX / 10 && digit > 7)) return 0;
if (ans < INT_MIN / 10 || (ans == INT_MIN / 10 && digit < -8)) return 0;
ans = ans * 10 + digit; // 將數字加入到反轉結果
x /= 10; // 去掉最後一位數字
}
return ans;
}
};